\documentclass[a4paper]{article}

\input{macros}

\usepackage{fullpage}
\parindent 0cm
\begin{document}
This readme explains on how to use the template to generate the requirements capture and analysis document for the hand-in.\\

Make sure you have pdflatex installed. On Ubuntu one can easily install it by typing:

\begin{verbatim}
sudo apt-get install tetex-base tetex-bin tetex-extra latex-ucs
\end{verbatim}

This should install all the necessary files to run pdflatex. \\

On a Windows machine, one can install pdflatex by downloading mikTex (miktex.org). \\

The next important step is to configure the document with your names, tutor name and revision of the document. This is done by opening the config.tex file. 
You will see the following text already inside the file.

\begin{verbatim}
%Enter your project information here
\students{First Last\\First last\\etc...}
\assistant{First Last}
\revision{0.0}
\end{verbatim}

Enter your names into the students commands all separated by \verb \\. Also enter the name of the tutor which is in your exercise sessions. Finally, enter the revision of the document (it is likely that you will have multiple revisions).\\

Now you are ready to start writing your document. The template is split into multiple files. Every section and subsection has its own files. You must only modify the empty .tex files which are designed to hold your text. Do {\em not} modify the assignement1.tex, macro.tex nor title.tex. These files contain the template. The following files should be edited:

\begin{verbatim}
boundaryObjects.tex
classDiagrams.tex
controlObjects.tex
entityObjects.tex
introduction.tex
nonFunctionalDoc.tex
nonFunctionalError.tex
nonFunctionalHardware.tex
nonFunctionalPerformance.tex
nonFunctionalPhysical.tex
nonFunctionalQuality.tex
nonFunctionalResource.tex
nonFunctionalSecurity.tex
nonFunctionalSysInterface.tex
nonFunctionalSysMods.tex
nonFunctionalUI.tex
roles.tex
sequenceDiagrams.tex
stateDiagrams.tex
usecases.tex
userInterface.tex
\end{verbatim}

Note, you do {\em not} need to provide non functional requirements for every subsection. If you decide not to include a non functional requirement, leave the .tex file empty, but do {\em not} modify the assignment1.tex.\\

Moreover, the template already provides you with a labelling scheme. The following labels are already provided and point to the correct sections. 

\begin{verbatim}
intro
system
system:functional
system:functional:roles
system:functional:usecases
system:nonfunctional
system:nonfunctional:human
system:nonfunctional:documentation
system:nonfunctional:hardware
system:nonfunctional:performance
system:nonfunctional:error
system:nonfunctional:sysInterface
system:nonfunctional:quality
system:nonfunctional:sysMods
system:nonfunctional:physical
system:nonfunctional:security
system:nonfunctional:reource
system:objectModel
system:objectModel:classDiagrams
system:objectModel:entityObjects
system:objectModel:boundaryObjects
system:objectModel:controlObjects
system:dynamicModel
system:functional:sequenceDiagrams
system:functional:stateDiagrams
system:userInterface
\end{verbatim}

To use cross refer to another section it is enough to write \verb \ref{system:functional} \ which will give you the section number. \\

The template also provides new commands for use cases, flow of events and nonfunctional requirements. 

example of a use case:
\begin{verbatim}
\begin{usecase}{CheckOrder}
\uPA{User, Banking System}
\begin{events}
\event{User enters order num}
\event{something happens}
\event{display order}
\end{events}
\entryCon{User is registered}
\exitCon{User is happy}
\extensions{ Some other use case}
\quality{Has to be fast}
\end{usecase}
\end{verbatim}

which results in: \\

\begin{usecase}{CheckOrder}
\uPA{User, Banking System}
\begin{events}
\event{User enters order num}
\event{something happens}
\event{display order}
\end{events}
\entryCon{User is registered}
\exitCon{User is happy}
\extensions{ Some other use case}
\quality{Has to be fast}
\end{usecase}


There are also new commands for nonfunctional requirements:
\begin{verbatim}
\begin{nonFunctional}
\requirement{System must be operational within 20 minutes}
\requirement{System should never explode}
\end{nonFunctional}
\end{verbatim}

which results in:
\begin{nonFunctional}
\requirement{System must be operational within 20 minutes}
\requirement{System should never explode}
\end{nonFunctional}

It is advised that you use one begin end block for one section of the non functional requirements. \\

Also, the template provides commands for the object model to create entity/boundary/control objects. An example on how to use these:

\begin{verbatim}
\begin{objects}
\object{SomeEntityObject}{This object is used as an example to ...}
\object{AnotherEntityObject}{This object is used as an example to ...}
\object{OneMore}{This object is used as an example to demonstrate ...}
\end{objects}
\end{verbatim}

resulting in:\\

\begin{objects}
\object{SomeEntityObject}{This object is used as an example to demonstrate how to use the template}
\object{AnotherEntityObject}{This object is used as an example to demonstrate how to use the template}
\object{OneMore}{This object is used as an example to demonstrate how to use the template}
\end{objects}


Please note, that the table cannot spread over multiple pages. If, in the unlikely event, that you need the table to spread over multiple pages, create a new begin{objects} end{objects} block.  \\

Finally, For those of you who have chosen a UNIX based operating system, a makefile is already provided. To compile the whole document, it is enough to write ``make all'' or just ``make''. This will generate a pdf file called assignment1.pdf. The makefile already compiles the document twice so all references are updated correctly. Also to get rid of all the additional files created at compile time, one can write ``make clean''

\end{document}